package com.cn.springcloudwechat.service.articleAndMenu;


import com.cn.springcloudwechat.common.mybatis.Page;
import com.cn.springcloudwechat.model.articleAndMenu.YmActivityArticle;
import com.cn.springcloudwechat.model.articleAndMenu.YmArticle;
import com.cn.springcloudwechat.model.articleAndMenu.YmArticleExpand;
import com.cn.springcloudwechat.model.articleAndMenu.YmScrollArticle;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * @program: parent$
 * @author: Administrator$
 * @create: 2018/7/17$ 17:20$
 */
public interface YmArticleService {

    /**
     * 添加文章
     *
     * @param record
     * @return
     */

    Long insertArticle(YmArticle record);

    /**
     * 更新文章
     *
     * @param record
     */
    int updateArticle(YmArticle record);

    /**
     * 获取推荐菜单文章（最新，热门，精选）
     *
     * @return
     */
    Map<String, Object> getRecommendMenuArticle();

    /**
     * 获取相关类型文章
     *
     * @param articleType
     * @return
     */
    Page<YmArticle> getYmArticle(Integer articleType,Page<YmArticle> page);

    /**
     *  获取相关类型文章
     * @param articleType
     * @return
     */
    List<YmArticle> getYmArticleNoPage(Integer articleType,Page<YmArticle> page);

    /**
     * 根据滚动类型获取轮播文章
     *
     * @param scrollType
     * @return
     */
    List<YmScrollArticle> getScrollArticle(Integer scrollType);


    /**
     * 添加轮播文章
     *
     * @param ymScrollArticle
     */
    Long insertScrollArticle(YmScrollArticle ymScrollArticle);

    /**
     * 更新轮播文章
     *
     * @param ymScrollArticle
     */
    int updateScrollArticle(YmScrollArticle ymScrollArticle);


    /**
     * 通过菜单ID 获取文章
     *
     * @param menuTagId
     * @return
     */
    Page<YmArticle> getMenuArticle(Long menuTagId,Page<YmArticle> page);

    /**
     * 查询文章点赞数及阅读量
     *
     * @param articleId
     * @return
     */
    YmArticleExpand getArticleExpandData(Long articleId);


    /**
     * 更新文章阅读量
     *
     * @param articleId
     */
    void updateArticleReadNumber(Long articleId);


    /**
     * 添加活动
     *
     * @param record
     * @return
     */
    void insertSelective(YmActivityArticle record);

    /**
     * 获取活动文章
     *
     * @param record
     * @return
     */
    List<YmActivityArticle> getActivityArticle(YmActivityArticle record);

    /**
     * 更新活动文章
     *
     * @param record
     */
    void updateActivityArticle(YmActivityArticle record);

    /**
     * 根据文章id 查询文章
     *
     * @param articleId
     * @return
     */
    YmArticle selectByPrimaryKey(Long articleId);

    /**
     * 批量更新文章状态
     *
     * @param articleId
     * @param state
     */
    void updateArticleState(List<Long> articleId, short state);

    /**
     * 根据条件获取文章
     *
     * @param ymArticle
     * @return
     */
    Page<Object> getArticlesParameter(YmArticle ymArticle, Page<Object> page);

    /**
     * 添加关联关系
     *
     * @param relevanceId
     * @param relevanceTpyeId
     * @param attachmentId
     */
    void insterYmAttachmentRelevance(long relevanceId, String relevanceTpyeId, long attachmentId);

    /**
     * 修改轮播图状态
     *
     * @param scrollArticleId
     * @param state
     */
    void updateScollArticleState(List<Long> scrollArticleId, short state);

    /**
     * 根据条件查询 轮播图数据
     *
     * @param record
     * @param page
     * @return
     */
    Page<Object> getScrollArticleByParameter(YmScrollArticle record, Page<Object> page);
}
